﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Data.Linq;
using System.Text;
using System.Windows.Forms;
using BOL;
using BLL;
using DAL;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Metro;
using DevComponents.DotNetBar.Metro.ColorTables;
using DevComponents.AdvTree;

namespace QLThueMuonXe
{
    public partial class frmMain : MetroAppForm
    {
        QLThueXeDataContext db = new QLThueXeDataContext();
        FormMain fm = new FormMain();
        FormDangNhap fdn = new FormDangNhap();
        FormThongKe ftk = new FormThongKe();
        HamDungChung dc = null;
        #region Khai Báo Ban Đầu
        string MaNhanVien;
        int SoXe; // lưu số xe của trung tâm
        private int LabelCouter = 0; //Biến đếm cho các Label
        private Label[,] CurLabels; //Mảng để đón nhận các Label được tạo  
        private string[,] MaThueXe; //Mãng lưu lại mã thuê xe ứng với mảng lable ở trên;
        private int[,] SoPhut_DaXai_Cuoi; //mảng lưu số phút đã xài của lable màu hồng;
        private int[,] SoPhut_DaXai_Dau;//mảng lưu số phút đã xài của lable màu hồng;
        int btLeft ; // Thuộc tính left cho label đầu tiên
        int btTop; //thuộc tính top cho label đầu tiên
        List<ThongTinThueXe> tttx;
        public List<ThongTinXe> lsttx;
        public List<ThongTinNhanVien> ttnv;
        public string tendangnhap;

        frmNhanVien frmnhanvien = null;
        frmHangXe frmhangxe = null;
        frmXe frmXe = null;
        frmGiaThue frmgiathue = null;
        frmThongTinNhanVien frmttnhanvien = null;
        #endregion

        private void LoadStart()
        {
            btLeft = 2; 
            btTop = 2;
            lsttx = fm.LayTTXe();
            SoXe = lsttx.Count;
            CurLabels = new Label[SoXe + 1, SoXe * 24 + 1];
            DateIPNgayDat.Value = System.DateTime.Now;
            VeBang(SoXe);
        }

        private void LoadForm()
        {
            DateIPNgayDat.Value = System.DateTime.Now;
            CheckDatXe(DateIPNgayDat.Value);
            cobThongKe.Text = "";
        }

        public frmMain()
        {
            InitializeComponent();
            dc = new HamDungChung();

            #region Load màu cho button và add event click button đổi màu giao diện
            //DoiGiaoDien = new Command(components, new EventHandler(ThayDoiGiaoDien));
            //add theme metro vào button "thay đổi giao diện"
            MetroColorGeneratorParameters[] metroThemes = MetroColorGeneratorParameters.GetAllPredefinedThemes();
            foreach (MetroColorGeneratorParameters mt in metroThemes)
            {
                ButtonItem theme = new ButtonItem(mt.ThemeName, mt.ThemeName);
                theme.Command = DoiGiaoDien;
                theme.CommandParameter = mt;
                btnTheme.SubItems.Add(theme);
            }
            #endregion

            
            dc.showfrmNhanVien = new Command(components, new EventHandler(showfrmNhanVien));
            dc.dongfrmNhanVien = new Command(components, new EventHandler(dongfrmNhanVien));
            btnnhanvien.Command = dc.showfrmNhanVien;

            dc.showfrmHangXe = new Command(components, new EventHandler(showfrmHangXe));
            dc.dongfrmHangXe = new Command(components, new EventHandler(dongfrmHangXe));
            btnhangxe.Command = dc.showfrmHangXe;

            dc.showfrmXe = new Command(components, new EventHandler(showfrmXe));
            dc.dongfrmXe = new Command(components, new EventHandler(dongfrmXe));
            btnXe.Command = dc.showfrmXe;

            dc.showfrmgiathue = new Command(components, new EventHandler(showfrmGiaThue));
            dc.dongfrmgiathue = new Command(components, new EventHandler(dongfrmGiaThue));
            btngiathue.Command = dc.showfrmgiathue;

            dc.showfrmttnv = new Command(components, new EventHandler(showfrmttctnhanvien));
            dc.dongfrmttnvien = new Command(components, new EventHandler(dongfrmttctnhanvien));
            buttonItem3.Command = dc.showfrmttnv;
        }

        public void PhanQuyen(string chucvu)
        {
            
            if(chucvu == "Quản lý")
            {
                metroTabItem_Quanly.Visible = true;
                //buttonItem1.Enabled = true;
                //buttonItem2.Enabled = true;
            }
            else
            {
                metroTabItem_Quanly.Visible = false;
                //buttonItem1.Enabled = false;
                //buttonItem2.Enabled = false;
            }

        }

        //chỉnh lại location chức năng form quản lý
        protected override void OnResize(EventArgs e)
        {
            // Center the panel
            metroTilePanel1.Location = new Point((this.Width - metroTilePanel1.Width) / 2, (this.Height - 100 - metroTilePanel1.Height) / 2);
            base.OnResize(e);
        }

        //Form Load
        private void frmMain_Load(object sender, EventArgs e)
        {
            ttnv = fdn.LayDSNhanVien(tendangnhap);
            PhanQuyen(ttnv.First().chucvu);
            lbltennv.Text = "Xin Chào: " + ttnv.First().hotennv + "";
            lblchucvu.Text = "  |  Chức vụ: " + ttnv.First().chucvu + "";
            MaNhanVien = ttnv.First().manv;
            cobThongKe.Items.Add("Tổng hợp");
            cobThongKe.Items.Add("Hủy thuê xe");
            cobThongKe.Items.Add("Đã thanh toán");
            cobThongKe.Items.Add("Chưa thanh toán");

            panel_Grid.Controls.Clear();
            LoadStart();
            LoadForm();
            
            //MessageBox.Show(LabelCouter.ToString());
        }

        #region Đổi màu giao diện
        private Command DoiMau;
        public Command DoiGiaoDien
        {
            get { return DoiMau; }
            set { DoiMau = value; }
        }
        private void ThayDoiGiaoDien(object sender, EventArgs e)
        {
            ICommandSource source = (ICommandSource)sender;
            MetroColorGeneratorParameters Theme = (MetroColorGeneratorParameters)source.CommandParameter;
            StyleManager.MetroColorGeneratorParameters = Theme;

        }
        #endregion

        #region Vẽ Bảng theo dõi
        private void VeBang(int SoXe)
        {
            int k = 1;
            
            foreach(var row in lsttx)
            {
                //Vẽ Lable đầu tiên mỗi dòng                
                VeLable(row.max.Substring(2,2));
                //Vẽ tiếp Lable 1 - 24h
                for (int i = 1; i <= 24; i++)
                {

                    //Tạo các Lable mới
                    Label NewLabel = new Label();
                    //Tạo các thuộc tính cho Lable
                    NewLabel.Size = new System.Drawing.Size(50, 50);
                    LabelCouter += 1;
                    NewLabel.Name = Convert.ToString(LabelCouter);
                    NewLabel.Left = btLeft;
                    NewLabel.Top = btTop;
                    NewLabel.TabIndex = i;
                    NewLabel.Text = i.ToString();
                    NewLabel.BackColor = System.Drawing.Color.LightBlue;
                    NewLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
                    NewLabel.Size = new System.Drawing.Size(50, 50);
                    NewLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(163)));
                    btLeft = btLeft + 52;
                    NewLabel.DoubleClick += new System.EventHandler(OnClick);
                    this.panel_Grid.Controls.Add(NewLabel);
                    CurLabels[k, i] = NewLabel;
                    if (LabelCouter % 25 == 0)
                    {
                        break;
                    }
                }
                btTop = btTop + 52;
                btLeft = 2;
                k += 1;
            }
        }

        //vẽ Lable Xe 1, Xe 2, Xe 3, ....
        private void VeLable(string k)
        {
            //Tạo các Lable mới
            Label NewLabel = new Label();
            //Tạo các thuộc tính cho Lable
            NewLabel.Size = new System.Drawing.Size(50, 50);
            LabelCouter += 1;
            NewLabel.Name = Convert.ToString(LabelCouter);
            NewLabel.Left = btLeft;
            NewLabel.Top = btTop;
            //NewLabel.TabIndex = i;
            NewLabel.Text = "Xe "+k+"";
            NewLabel.BackColor = System.Drawing.Color.Red;
            NewLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            NewLabel.Size = new System.Drawing.Size(60, 50);
            NewLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(163)));
            btLeft = btLeft + 62;
            this.panel_Grid.Controls.Add(NewLabel);
        }

        //Sự kiện DoubleClick trên Lable
        void OnClick(object sender, System.EventArgs e)
        {
            Label lblGio = (Label)sender;
            //if (this.DateIPNgayDat.Value.Date < System.DateTime.Now.Date && lblGio.BackColor == System.Drawing.Color.LightBlue)
            //{
            //    MessageBox.Show("Chọn ngày bằng hoặc lớn hơn ngày hiện tại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
            //else
            //{
                for (int i = 1; i <= SoXe; i++)
                    for (int k = 1; k <= 24; k++)
                        if (CurLabels[i, k].Name == lblGio.Name)
                        {
                            //giờ có 2 người thue
                            if (MaThueXe[i, k] != null && MaThueXe[i, k].Length > 8)
                            {
                                MessageBox.Show("Giờ có 2 người thuê, click giờ trước hoặc sau để thao tác","Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            else
                            {
                                frmDatXe frm = new frmDatXe();
                                frm.lb = lblGio;
                                frm.madatxe = MaThueXe[i, k];
                                frm.ngaydk = DateIPNgayDat.Value;
                                frm.lstttx = fm.LayTTThueXe(DateIPNgayDat.Value);
                                //đưa mã nhân viên qua
                                frm.maNhanVien = MaNhanVien;
                                //Delegate nè
                                frm.LoadNe = new frmDatXe.LoadLaiForm(LoadClick);
                                //=============
                                if (i < 10)
                                    frm.maxe = "XE0" + i + "";
                                else frm.maxe = "XE" + i + "";
                               //nếu ô màu xanh thì kiểm tra ô khác màu xa nhất là bao nhiêu để tính thời gian có thể đặt
                                if (CurLabels[i, k].BackColor == System.Drawing.Color.LightBlue)
                                {
                                    int Sogiodatduoc = 0;
                                    int sophutdatdc = 0;
                                    for (int g = k; g <= 24; g++)
                                    {
                                        if (CurLabels[i, g].BackColor == System.Drawing.Color.LightBlue)
                                            Sogiodatduoc += 1;
                                        else
                                        {
                                            if (CurLabels[i, g].BackColor == System.Drawing.Color.LightCoral)
                                            {
                                                sophutdatdc += SoPhut_DaXai_Cuoi[i, g];
                                                break;
                                            }
                                            else break;
                                        }
                                    }
                                    frm.SoGioCoTheDat = Sogiodatduoc;
                                    frm.SoPhutCoTheDat = sophutdatdc;
                                }
                                else
                                {
                                    //ô màu hồng nhưng sau nó là màu xanh nên có thể đặt đc
                                    if (CurLabels[i, k].BackColor == System.Drawing.Color.LightCoral && CurLabels[i, k + 1].BackColor == System.Drawing.Color.LightBlue)
                                    {
                                        frm.checklbHong = true;
                                        int Sogiodatduoc = 0;
                                        int sophutdatdc = 60 - SoPhut_DaXai_Dau[i, k];
                                        frm.SoPhutBatDauDat = SoPhut_DaXai_Dau[i, k];
                                        for (int g = k+1; g <= 24; g++)
                                        {
                                            if (CurLabels[i, g].BackColor == System.Drawing.Color.LightBlue)
                                                Sogiodatduoc += 1;
                                            else
                                            {
                                                if (CurLabels[i, g].BackColor == System.Drawing.Color.LightCoral)
                                                {
                                                    sophutdatdc += SoPhut_DaXai_Cuoi[i, g];
                                                    break;
                                                }
                                                else break;
                                            }
                                        }
                                        frm.SoGioCoTheDat = Sogiodatduoc;
                                        frm.SoPhutCoTheDat = sophutdatdc;
                                    }
                                        //ô màu hồng nhưng sau nó là màu hồng nữa, hoặc màu đỏ thì cho nó dừng luôn
                                    else frm.checklbHong = false;
                                }
                                frm.ShowDialog();
                            }
                            break;
                        }
            //}
        }
        #endregion       
 
        //Show Tooltip 1 người (Giờ có một người thuê)
        public void ShowTooltip(string madatxe, Label lbl)
        {
            var thongtin = fm.LayttDatXeTooltip(madatxe).First();
            TimeSpan tp = new TimeSpan(thongtin.sogiothue, thongtin.sophutthue,0);
            DateTime dt = thongtin.ngaygioBD.Add(tp);
            string thanhtoan;
            if (thongtin.thanhtoan) thanhtoan = "Đã thanh toán!";
            else thanhtoan = "Chưa thanh toán!";
            string abc = "Họ tên: " + thongtin.tenkh + "\r\nSố đt: " + thongtin.sdtkh + "\r\nĐịa chỉ: " + thongtin.diachiKH + "\r\nGiờ thuê: " + thongtin.ngaygioBD.Hour + ":" + thongtin.ngaygioBD.Minute + "  Đến: " + dt.Hour + ":" + dt.Minute + "\r\n"+thanhtoan+"";
            this.toolTip1.SetToolTip(lbl, abc);
        }

        //Show Tooltip 2 người (giờ có 2 người thuê)
        public void ShowTooltip(string madatxe1, string madatxe2, Label lbl)
        {
            var thongtin = fm.LayttDatXeTooltip(madatxe1).First();
            TimeSpan tp = new TimeSpan(thongtin.sogiothue, thongtin.sophutthue, 0);
            DateTime dt = thongtin.ngaygioBD.Add(tp);
            string thanhtoan;
            if (thongtin.thanhtoan) thanhtoan = "Đã thanh toán!";
            else thanhtoan = "Chưa thanh toán!";
            var thongtin2 = fm.LayttDatXeTooltip(madatxe2).First();
            TimeSpan tp2 = new TimeSpan(thongtin2.sogiothue, thongtin2.sophutthue, 0);
            DateTime dt2 = thongtin2.ngaygioBD.Add(tp2);
            string thanhtoan2;
            if (thongtin2.thanhtoan) thanhtoan2 = "Đã thanh toán!";
            else thanhtoan2 = "Chưa thanh toán!";
            string abc = "Họ tên: " + thongtin.tenkh + "\r\nSố đt: " + thongtin.sdtkh + "\r\nĐịa chỉ: " + thongtin.diachiKH + "\r\nGiờ thuê: " + thongtin.ngaygioBD.Hour + ":" + thongtin.ngaygioBD.Minute + "  Đến: " + dt.Hour + ":" + dt.Minute + "\r\n" + thanhtoan + "\r\n----------------------------------\r\nHọ tên: " + thongtin2.tenkh + "\r\nSố đt: " + thongtin2.sdtkh + "\r\nĐịa chỉ: " + thongtin2.diachiKH + "\r\nGiờ thuê: " + thongtin2.ngaygioBD.Hour + ":" + thongtin2.ngaygioBD.Minute + "  Đến: " + dt2.Hour + ":" + dt2.Minute + "\r\n" + thanhtoan2 + "";
            this.toolTip1.SetToolTip(lbl, abc);
        }

        //load màu cho các ô. Nếu đặt rồi thì tô màu đỏ
        private void CheckDatXe(DateTime dtmain)
        {
            MaThueXe = new string[SoXe + 1, SoXe * 24 + 1];
            SoPhut_DaXai_Cuoi = new int[SoXe + 1, SoXe * 24 + 1];
            SoPhut_DaXai_Dau = new int[SoXe + 1, SoXe * 24 + 1];
            tttx = fm.LayTTThueXe(dtmain);
            for(int i =1; i<= SoXe; i++)
            {
                foreach(var row in tttx)
                {
                    if(int.Parse(row.maxe.Substring(2,2))==i)
                    {
                        TimeSpan tp = new TimeSpan(row.sogiothue, row.sophutthue, 0);
                        DateTime dt = row.ngaygiothue.Add(tp);

                        //giờ bắt đầu có phút lẻ thì tô màu hồng hồng
                        if((int)row.ngaygiothue.Minute != 0)
                        {
                            if (row.thanhtoan)
                            {
                                CurLabels[i, row.ngaygiothue.Hour].Image = global::QLThueMuonXe.Properties.Resources.Oke;
                                CurLabels[i, row.ngaygiothue.Hour].ImageAlign = System.Drawing.ContentAlignment.BottomLeft;
                            }
                            CurLabels[i,row.ngaygiothue.Hour].BackColor = System.Drawing.Color.LightCoral;
                            MaThueXe[i, row.ngaygiothue.Hour] += ""+row.matx+" ";
                            SoPhut_DaXai_Cuoi[i, row.ngaygiothue.Hour] = row.ngaygiothue.Minute;
                            //trường hợp có 2 người thuê chung giờ, vd người 1 kết thúc 15h10 - người 2 bắt đầu 15h30 : khi đó giờ ngày có 2 mã thuê xe
                            if (MaThueXe[i, row.ngaygiothue.Hour].Length > 8)
                            {
                                CurLabels[i, row.ngaygiothue.Hour].Image = null;
                                string[] chuoi = MaThueXe[i, row.ngaygiothue.Hour].Split(' ');
                                ShowTooltip(chuoi[0], chuoi[1], CurLabels[i, row.ngaygiothue.Hour]);
                                //this.toolTip1.SetToolTip(CurLabels[i, row.ngaygiothue.Hour], "ở đây có 2 thằng mướn");
                            }
                            else { ShowTooltip(MaThueXe[i, row.ngaygiothue.Hour], CurLabels[i, row.ngaygiothue.Hour]); }
                        }
                        else 
                        {
                            if (row.thanhtoan)
                            {
                                CurLabels[i, row.ngaygiothue.Hour].Image = global::QLThueMuonXe.Properties.Resources.Oke;
                                CurLabels[i, row.ngaygiothue.Hour].ImageAlign = System.Drawing.ContentAlignment.BottomLeft;
                            }
                            CurLabels[i,row.ngaygiothue.Hour].BackColor = System.Drawing.Color.Red;
                            MaThueXe[i, row.ngaygiothue.Hour] = row.matx;
                            ShowTooltip(row.matx, CurLabels[i, row.ngaygiothue.Hour]);                            
                        }

                        //giờ nằm trong khoảng giữa thì chắc chắn đỏ
                        for (int k = row.ngaygiothue.Hour + 1 ; k < dt.Hour; k++)
                        {
                            if(row.thanhtoan)
                            {
                                CurLabels[i, k].Image = global::QLThueMuonXe.Properties.Resources.Oke;
                                CurLabels[i, k].ImageAlign = System.Drawing.ContentAlignment.BottomLeft;
                            }
                            CurLabels[i, k].BackColor = System.Drawing.Color.Red;
                            MaThueXe[i, k] = row.matx;
                            ShowTooltip(MaThueXe[i, k], CurLabels[i, k]);                            
                        }

                        //giờ cuối mà có lẻ thì phải thêm vào 1 giờ sau nữa, tô nó màu hồng hồng.
                        if(dt.Minute !=0 )
                        {
                            if (row.thanhtoan)
                            {
                                CurLabels[i, dt.Hour].Image = global::QLThueMuonXe.Properties.Resources.Oke;
                                CurLabels[i, dt.Hour].ImageAlign = System.Drawing.ContentAlignment.BottomLeft;
                            }
                            CurLabels[i,dt.Hour].BackColor = System.Drawing.Color.LightCoral;
                            MaThueXe[i, dt.Hour] += "" + row.matx + " ";
                            SoPhut_DaXai_Dau[i, dt.Hour] = dt.Minute;
                            //trường hợp có 2 người thuê chung giờ, vd người 1 kết thúc 15h10 - người 2 bắt đầu 15h30 : khi đó giờ ngày có 2 mã thuê xe
                            if (MaThueXe[i, dt.Hour].Length > 8)
                            {
                                CurLabels[i, dt.Hour].Image = null;
                                string[] chuoi = MaThueXe[i, dt.Hour].Split(' ');
                                ShowTooltip(chuoi[0], chuoi[1], CurLabels[i, dt.Hour]);
                                //this.toolTip1.SetToolTip(CurLabels[i, dt.Hour], "ở đây có 2 thằng mướn");
                            }
                            else { ShowTooltip(MaThueXe[i, dt.Hour], CurLabels[i, dt.Hour]); }
                        }
                    }
                }
            }
        }

        //Load lại màu xanh cho tất cả các ô
        public void XoaGrid()
        {
            for(int i =1; i<= SoXe; i++)
                for (int k = 1; k <= 24; k++)
                {
                    CurLabels[i, k].BackColor = System.Drawing.Color.LightBlue;
                    CurLabels[i, k].Image = null;
                }
        }

        //sự kiện click Button Load
        public void LoadClick()
        {
            XoaGrid();
            CheckDatXe(DateIPNgayDat.Value);
        }

        private void btnload_Click(object sender, EventArgs e)
        {
            LoadClick();
        }

        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Application.Exit();            
        }

        #region Điều khiển đóng mở form metro
        void showfrmNhanVien(object sender, EventArgs e)
        {
            frmnhanvien = new frmNhanVien();
            frmnhanvien.Commands = dc;
            this.ShowModalPanel(frmnhanvien, DevComponents.DotNetBar.Controls.eSlideSide.Left);
        }
        private void dongfrmNhanVien(object sender, EventArgs e)
        {

            this.CloseModalPanel(frmnhanvien, DevComponents.DotNetBar.Controls.eSlideSide.Left);
            frmnhanvien.Commands = null;
            frmnhanvien.Dispose();
            frmnhanvien = null;
        }

        void showfrmHangXe(object sender, EventArgs e)
        {
            frmhangxe = new frmHangXe();
            frmhangxe.Commands = dc;
            this.ShowModalPanel(frmhangxe, DevComponents.DotNetBar.Controls.eSlideSide.Left);
        }
        private void dongfrmHangXe(object sender, EventArgs e)
        {

            this.CloseModalPanel(frmhangxe, DevComponents.DotNetBar.Controls.eSlideSide.Left);
            frmhangxe.Commands = null;
            frmhangxe.Dispose();
            frmhangxe = null;
        }

        void showfrmXe(object sender, EventArgs e)
        {
            frmXe = new frmXe();
            frmXe.Commands = dc;
            this.ShowModalPanel(frmXe, DevComponents.DotNetBar.Controls.eSlideSide.Left);
        }
        private void dongfrmXe(object sender, EventArgs e)
        {

            this.CloseModalPanel(frmXe, DevComponents.DotNetBar.Controls.eSlideSide.Left);
            frmXe.Commands = null;
            frmXe.Dispose();
            frmXe = null;
        }

        void showfrmGiaThue(object sender, EventArgs e)
        {
            frmgiathue = new frmGiaThue();
            frmgiathue.Commands = dc;
            this.ShowModalPanel(frmgiathue, DevComponents.DotNetBar.Controls.eSlideSide.Left);
        }
        private void dongfrmGiaThue(object sender, EventArgs e)
        {

            this.CloseModalPanel(frmgiathue, DevComponents.DotNetBar.Controls.eSlideSide.Left);
            frmgiathue.Commands = null;
            frmgiathue.Dispose();
            frmgiathue = null;
        }

        void showfrmttctnhanvien(object sender, EventArgs e)
        {
            frmttnhanvien = new frmThongTinNhanVien();
            frmttnhanvien.manv = MaNhanVien;
            frmttnhanvien.Commands = dc;
            this.ShowModalPanel(frmttnhanvien, DevComponents.DotNetBar.Controls.eSlideSide.Left);
        }
        private void dongfrmttctnhanvien(object sender, EventArgs e)
        {

            this.CloseModalPanel(frmttnhanvien, DevComponents.DotNetBar.Controls.eSlideSide.Left);
            frmttnhanvien.Commands = null;
            frmttnhanvien.Dispose();
            frmttnhanvien = null;
        }
        #endregion

        //checkbox ngày thống kê ở form thống kê
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            dateTimeInput_tungay.Enabled = checkBox1.Checked;
            dateTimeInput_denngay.Enabled = checkBox1.Checked;
            if(checkBox1.Checked)
            {
                dateTimeInput_tungay.Value = System.DateTime.Now;
                dateTimeInput_denngay.Value = System.DateTime.Now;
            }
            else
            {
                dateTimeInput_tungay.Text = null;
                dateTimeInput_denngay.Text = null;
            }
        }

        //load lại tab đặt xe khi từ tab khác chọn lại
        private void metroShell1_TabIndexChanged(object sender, EventArgs e)
        {
            if (metroShell1.SelectedTab.ToString() == "Đặt Xe")
            {
                panel_Grid.Controls.Clear();
                LoadStart();
                LoadForm();
            }
        }

        //Load Advtree tab thống kê tổng hợp
        private Node CreateXeRow(string maxe, string hangxe, string tenxe, string bienso, string tungay, string denngay, string tongtg, string tongtien)
        {
            Node node = new Node(maxe);
            node.Cells.Add(new Cell(hangxe));
            node.Cells.Add(new Cell(tenxe));
            node.Cells.Add(new Cell(bienso));
            node.Cells.Add(new Cell(tungay));
            node.Cells.Add(new Cell(denngay));
            node.Cells.Add(new Cell(tongtg));
            node.Cells.Add(new Cell(tongtien));
            return node;
        }
        
        public void TKLoad(DateTime tungay, DateTime denngay)
        {
            List<ThongKe2> ttx = ftk.tinhthongke(tungay, denngay);
            advTree1.Nodes.Clear();
            int tongtien = 0;
            foreach (var row in ttx)
            {
                advTree1.Nodes.Add(CreateXeRow(row.MaXe, row.HangXe, row.TenXe, row.BienSo, row.TuNgay.ToString("MM/dd/yyyy"), row.DenNgay.ToString("MM/dd/yyyy"), row.ThoiGian, string.Format("{0:#,0.#}", row.TongTien)));
                tongtien += row.TongTien; 
            }
            advTree1.SelectedIndex = 0;

            lbltongtien.Text = string.Format("{0:#,0.#} VND",tongtien);
        }

        //Load Advtree tab thống kê hủy thuê
        private Node CreateXeRow2(string maxe, string KhachHang, string NgayThue, string GioThue, string SoGio, string SoPhut, string NVThue, string NVHuy, string LyDo)
        {
            Node node = new Node(maxe);
            node.Cells.Add(new Cell(KhachHang));
            node.Cells.Add(new Cell(NgayThue));
            node.Cells.Add(new Cell(GioThue));
            node.Cells.Add(new Cell(SoGio));
            node.Cells.Add(new Cell(SoPhut));
            node.Cells.Add(new Cell(NVThue));
            node.Cells.Add(new Cell(NVHuy));
            node.Cells.Add(new Cell(LyDo));
            return node;
        }

        public void TKLoad2(DateTime tungay, DateTime denngay)
        {
            List<ThongKeHuyThue> ttx = ftk.ThongKeHuy(tungay, denngay);
            //MessageBox.Show(ttx.FirstOrDefault().NVHuy);
            advTree1.Nodes.Clear();
            foreach (var row in ttx)
            {
                advTree1.Nodes.Add(CreateXeRow2(row.MaXe, row.KhachHang, row.NgayThue.ToString("MM/dd/yyyy"), row.GioThue, row.SoGio.ToString(), row.SoPhut.ToString(), row.NVThue, row.NVHuy, row.LyDo));
            }
            advTree1.SelectedIndex = 0;
        }

        
        //Load Advtree tab thống chưa thanh toán
        private Node CreateXeRow3(string mathuexe, string maxe, string khachhang, string sdt, string ngaythue, string giobatdau, string thoigianthue, string dongia, string thanhtien)
        {
            Node node = new Node(mathuexe);
            node.Cells.Add(new Cell(maxe));
            node.Cells.Add(new Cell(khachhang));
            node.Cells.Add(new Cell(sdt));
            node.Cells.Add(new Cell(ngaythue));
            node.Cells.Add(new Cell(giobatdau));
            node.Cells.Add(new Cell(thoigianthue));
            node.Cells.Add(new Cell(dongia));
            node.Cells.Add(new Cell(thanhtien));
            return node;
        }

        public void TKLoad3(DateTime tungay, DateTime denngay)
        {
            List<ThongKeChuaThanhToan> tkctt = ftk.ThongKeChuaThanhToan(tungay, denngay);
            //MessageBox.Show(ttx.FirstOrDefault().NVHuy);
            advTree1.Nodes.Clear();
            int tongtien = 0;
            foreach (var row in tkctt)
            {
                advTree1.Nodes.Add(CreateXeRow3(row.mathuexe, row.maxe, row.khachhang, row.sdt, row.ngaythue.ToString("MM/dd/yyyy"), row.giobd, row.thoigianthue, string.Format("{0:#,0.#}", row.dongia), string.Format("{0:#,0.#}", row.thanhtien)));
                tongtien += row.thanhtien; 
            }
            advTree1.SelectedIndex = 0;
            lbltongtien.Text = string.Format("{0:#,0.#} VND", tongtien);
        }
        public void TKLoad33()
        {
            List<ThongKeChuaThanhToan> tkctt = ftk.ThongKeChuaThanhToan2(txttimkiemchuathanhtoan.Text);
            //MessageBox.Show(ttx.FirstOrDefault().NVHuy);
            advTree1.Nodes.Clear();
            int tongtien = 0;
            foreach (var row in tkctt)
            {
                advTree1.Nodes.Add(CreateXeRow3(row.mathuexe, row.maxe, row.khachhang, row.sdt, row.ngaythue.ToString("MM/dd/yyyy"), row.giobd, row.thoigianthue, string.Format("{0:#,0.#}", row.dongia), string.Format("{0:#,0.#}", row.thanhtien)));
                tongtien += row.thanhtien;
            }
            advTree1.SelectedIndex = 0;
            lbltongtien.Text = string.Format("{0:#,0.#} VND", tongtien);
        }

        //đã thanh toán
        public void TKLoad4(DateTime tungay, DateTime denngay)
        {
            List<ThongKeChuaThanhToan> tkctt = ftk.ThongKeDaThanhToan(tungay, denngay);
            //MessageBox.Show(ttx.FirstOrDefault().NVHuy);
            advTree1.Nodes.Clear();
            int tongtien = 0;
            foreach (var row in tkctt)
            {
                advTree1.Nodes.Add(CreateXeRow3(row.mathuexe, row.maxe, row.khachhang, row.sdt, row.ngaythue.ToString("MM/dd/yyyy"), row.giobd, row.thoigianthue, string.Format("{0:#,0.#}", row.dongia), string.Format("{0:#,0.#}", row.thanhtien)));
                tongtien += row.thanhtien;
            }
            advTree1.SelectedIndex = 0;
            lbltongtien.Text = string.Format("{0:#,0.#} VND", tongtien);
        }

        //button load form thống kê
        private void buttonX1_Click(object sender, EventArgs e)
        {
            txttimkiemchuathanhtoan.Text = "";
            if (cobThongKe.Text == "")
            {
                MessageBox.Show("Chọn 1 tiêu chí để thống kê", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (cobThongKe.Text == "Tổng hợp")
                {
                    if (checkBox1.Checked)
                    {
                        if (dateTimeInput_tungay.Value > dateTimeInput_denngay.Value)
                            MessageBox.Show("Ngày nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        else
                        {
                            TKLoad(dateTimeInput_tungay.Value, dateTimeInput_denngay.Value);
                        }
                    }
                    else
                    {
                        TKLoad(System.DateTime.Now, System.DateTime.Now);
                    }

                }
                else
                {
                    if (cobThongKe.Text == "Hủy thuê xe")
                    {
                        if (checkBox1.Checked)
                        {
                            if (dateTimeInput_tungay.Value > dateTimeInput_denngay.Value)
                                MessageBox.Show("Ngày nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            else
                            {
                                TKLoad2(dateTimeInput_tungay.Value, dateTimeInput_denngay.Value);
                            }
                        }
                        else
                        {
                            TKLoad2(System.DateTime.Now, System.DateTime.Now);
                        }
                    }
                    else
                    {
                        if (cobThongKe.Text == "Đã thanh toán")
                        {
                            if (checkBox1.Checked)
                            {
                                if (dateTimeInput_tungay.Value > dateTimeInput_denngay.Value)
                                    MessageBox.Show("Ngày nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                else
                                {
                                    TKLoad4(dateTimeInput_tungay.Value, dateTimeInput_denngay.Value);
                                }
                            }
                            else
                            {
                                TKLoad4(System.DateTime.Now, System.DateTime.Now);
                            }
                        }
                        else
                        {
                            if (cobThongKe.Text == "Chưa thanh toán")
                            {
                                if (checkBox1.Checked)
                                {
                                    if (dateTimeInput_tungay.Value > dateTimeInput_denngay.Value)
                                        MessageBox.Show("Ngày nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    else
                                    {
                                        TKLoad3(dateTimeInput_tungay.Value, dateTimeInput_denngay.Value);
                                    }
                                }
                                else
                                {
                                    TKLoad3(System.DateTime.Now, System.DateTime.Now);
                                }
                            }
                        }
                    }
                }
            }
        }
        //click trên gird form thống kê
        private void advTree1_NodeDoubleClick(object sender, TreeNodeMouseEventArgs e)
        {
            Node nod = e.Node;
            frmChiTieThongKe frm = new frmChiTieThongKe();
            frm.maxe = nod.Cells[0].Text;
            frm.tungay = DateTime.Parse(nod.Cells[4].Text);
            frm.denngay = DateTime.Parse(nod.Cells[5].Text);
            frm.ShowDialog();
        }

        #region Vẽ lưới AdvTree form thông kê khi thay đổi tiêu chí thống kê
        //tổng hợp
        private DevComponents.AdvTree.ColumnHeader colmaxe;
        private DevComponents.AdvTree.ColumnHeader colhangxe;
        private DevComponents.AdvTree.ColumnHeader coltenxe;
        private DevComponents.AdvTree.ColumnHeader colbienso;
        private DevComponents.AdvTree.ColumnHeader cobtungay;
        private DevComponents.AdvTree.ColumnHeader cobdenngay;
        private DevComponents.AdvTree.ColumnHeader cobthoigian;
        private DevComponents.AdvTree.ColumnHeader cobtongtien;

        // hủy thuê xe
        private DevComponents.AdvTree.ColumnHeader colmx;
        private DevComponents.AdvTree.ColumnHeader colkhachhang;
        private DevComponents.AdvTree.ColumnHeader colngaythue;
        private DevComponents.AdvTree.ColumnHeader colgiothue;
        private DevComponents.AdvTree.ColumnHeader colsogiothue;
        private DevComponents.AdvTree.ColumnHeader colsophutthue;
        private DevComponents.AdvTree.ColumnHeader colnhanvienthue;
        private DevComponents.AdvTree.ColumnHeader colnhanvienhuy;
        private DevComponents.AdvTree.ColumnHeader collydohuy;

        //chưa thanh toán
        private DevComponents.AdvTree.ColumnHeader colmathuexe;
        private DevComponents.AdvTree.ColumnHeader colmxe;
        private DevComponents.AdvTree.ColumnHeader colkh;
        private DevComponents.AdvTree.ColumnHeader colsdt;
        private DevComponents.AdvTree.ColumnHeader coldatethue;
        private DevComponents.AdvTree.ColumnHeader cobgiobd;
        private DevComponents.AdvTree.ColumnHeader cobthoigianthue;
        private DevComponents.AdvTree.ColumnHeader cobdongia;
        private DevComponents.AdvTree.ColumnHeader cobthanhtien;

        private void tkTongHop()
        {
            lblnote.Text = "*Double click lên dòng để xem chi tiết";
            this.advTree1.NodeDoubleClick += new DevComponents.AdvTree.TreeNodeMouseEventHandler(this.advTree1_NodeDoubleClick);
            panel2.Visible = true;
            advTree1.Nodes.Clear();
            advTree1.Columns.Clear();
            advTree1.Refresh();
            this.colmaxe = new DevComponents.AdvTree.ColumnHeader();
            this.colhangxe = new DevComponents.AdvTree.ColumnHeader();
            this.coltenxe = new DevComponents.AdvTree.ColumnHeader();
            this.colbienso = new DevComponents.AdvTree.ColumnHeader();
            this.cobtungay = new DevComponents.AdvTree.ColumnHeader();
            this.cobdenngay = new DevComponents.AdvTree.ColumnHeader();
            this.cobthoigian = new DevComponents.AdvTree.ColumnHeader();
            this.cobtongtien = new DevComponents.AdvTree.ColumnHeader();
            // 
            // colmaxe
            // 
            this.colmaxe.Name = "colmaxe";
            this.colmaxe.Text = "Mã xe";
            this.colmaxe.Width.Relative = 10;
            // 
            // colhangxe
            // 
            this.colhangxe.Name = "colhangxe";
            this.colhangxe.Text = "Hạng Xe";
            this.colhangxe.Width.Relative = 10;
            // 
            // coltenxe
            // 
            this.coltenxe.Name = "coltenxe";
            this.coltenxe.Text = "Tên xe";
            this.coltenxe.Width.Relative = 20;
            // 
            // colbienso
            // 
            this.colbienso.Name = "colbienso";
            this.colbienso.Text = "Biển số";
            this.colbienso.Width.Relative = 10;
            // 
            // cobtungay
            // 
            this.cobtungay.Name = "cobtungay";
            this.cobtungay.Text = "Từ ngày";
            this.cobtungay.Width.Relative = 10;
            // 
            // cobdenngay
            // 
            this.cobdenngay.Name = "cobdenngay";
            this.cobdenngay.Text = "Đến ngày";
            this.cobdenngay.Width.Relative = 10;
            // 
            // cobthoigian
            // 
            this.cobthoigian.Name = "cobthoigian";
            this.cobthoigian.Text = "Tổng thời gian";
            this.cobthoigian.Width.Relative = 15;
            // 
            // cobtongtien
            // 
            this.cobtongtien.Name = "cobtongtien";
            this.cobtongtien.Text = "Tổng tiền";
            this.cobtongtien.Width.Relative = 15;

            this.advTree1.Columns.Add(this.colmaxe);
            this.advTree1.Columns.Add(this.colhangxe);
            this.advTree1.Columns.Add(this.coltenxe);
            this.advTree1.Columns.Add(this.colbienso);
            this.advTree1.Columns.Add(this.cobtungay);
            this.advTree1.Columns.Add(this.cobdenngay);
            this.advTree1.Columns.Add(this.cobthoigian);
            this.advTree1.Columns.Add(this.cobtongtien);
        }

        private void tkHuyThue()
        {
            lblnote.Text = "";
            this.advTree1.NodeDoubleClick -= new DevComponents.AdvTree.TreeNodeMouseEventHandler(this.advTree1_NodeDoubleClick);
            panel2.Visible = false;
            advTree1.Nodes.Clear();
            advTree1.Columns.Clear();
            advTree1.Refresh();

            this.colmx = new DevComponents.AdvTree.ColumnHeader();
            this.colkhachhang = new DevComponents.AdvTree.ColumnHeader();
            this.colngaythue = new DevComponents.AdvTree.ColumnHeader();
            this.colgiothue = new DevComponents.AdvTree.ColumnHeader();
            this.colsogiothue = new DevComponents.AdvTree.ColumnHeader();
            this.colsophutthue = new DevComponents.AdvTree.ColumnHeader();
            this.colnhanvienthue = new DevComponents.AdvTree.ColumnHeader();
            this.colnhanvienhuy = new DevComponents.AdvTree.ColumnHeader();
            this.collydohuy = new DevComponents.AdvTree.ColumnHeader();

            this.colmx.Name = "colmx";
            this.colmx.Text = "Mã xe";
            this.colmx.Width.Relative = 8;
            
            this.colkhachhang.Name = "colkhachhang";
            this.colkhachhang.Text = "Khách hàng";
            this.colkhachhang.Width.Relative = 15;
            
            this.colngaythue.Name = "colngaythue";
            this.colngaythue.Text = "Ngày thuê";
            this.colngaythue.Width.Relative = 9;
            
            this.colgiothue.Name = "colgiothue";
            this.colgiothue.Text = "Giờ bắt đầu";
            this.colgiothue.Width.Relative = 7;
            
            this.colsogiothue.Name = "colsogiothue";
            this.colsogiothue.Text = "Giờ thuê";
            this.colsogiothue.Width.Relative = 6;
            
            this.colsophutthue.Name = "colsophutthue";
            this.colsophutthue.Text = "Phút thuê";
            this.colsophutthue.Width.Relative = 6;
            
            this.colnhanvienthue.Name = "colnhanvienthue";
            this.colnhanvienthue.Text = "NV lập";
            this.colnhanvienthue.Width.Relative = 15;
            
            this.colnhanvienhuy.Name = "colnhanvienhuy";
            this.colnhanvienhuy.Text = "NV hủy";
            this.colnhanvienhuy.Width.Relative = 15;

            this.collydohuy.Name = "collydohuy";
            this.collydohuy.Text = "Lý do hủy";
            this.collydohuy.Width.Relative = 19;

            this.advTree1.Columns.Add(this.colmx);
            this.advTree1.Columns.Add(this.colkhachhang);
            this.advTree1.Columns.Add(this.colngaythue);
            this.advTree1.Columns.Add(this.colgiothue);
            this.advTree1.Columns.Add(this.colsogiothue);
            this.advTree1.Columns.Add(this.colsophutthue);
            this.advTree1.Columns.Add(this.colnhanvienthue);
            this.advTree1.Columns.Add(this.colnhanvienhuy);
            this.advTree1.Columns.Add(this.collydohuy);

        }

        private void tkChuaThanhToan()
        {
            lblnote.Text = "*Click chuột phải chọn 'Sửa' để cập nhật";
            //this.advTree1.NodeDoubleClick += new DevComponents.AdvTree.TreeNodeMouseEventHandler(this.advTree1_NodeDoubleClick);
            panel2.Visible = true;
            advTree1.Nodes.Clear();
            advTree1.Columns.Clear();
            advTree1.Refresh();
            this.colmathuexe = new DevComponents.AdvTree.ColumnHeader();
            this.colmxe = new DevComponents.AdvTree.ColumnHeader();
            this.colkh = new DevComponents.AdvTree.ColumnHeader();
            this.colsdt = new DevComponents.AdvTree.ColumnHeader();
            this.coldatethue = new DevComponents.AdvTree.ColumnHeader();
            this.cobgiobd = new DevComponents.AdvTree.ColumnHeader();
            this.cobthoigianthue = new DevComponents.AdvTree.ColumnHeader();
            this.cobdongia = new DevComponents.AdvTree.ColumnHeader();
            this.cobthanhtien = new DevComponents.AdvTree.ColumnHeader();

            this.colmathuexe.Name = "colmathuexe";
            this.colmathuexe.Text = "Mã thuê xe";
            this.colmathuexe.Width.Relative = 10;

            this.colmxe.Name = "colmxe";
            this.colmxe.Text = "Xe";
            this.colmxe.Width.Relative = 7;
            
            this.colkh.Name = "colkh";
            this.colkh.Text = "Khách hàng";
            this.colkh.Width.Relative = 20;
            
            this.colsdt.Name = "colsdt";
            this.colsdt.Text = "Số đt";
            this.colsdt.Width.Relative = 10;
            
            this.coldatethue.Name = "coldatethue";
            this.coldatethue.Text = "Ngày thuê";
            this.coldatethue.Width.Relative = 10;
            
            this.cobgiobd.Name = "cobgiobd";
            this.cobgiobd.Text = "Giờ bắt đầu";
            this.cobgiobd.Width.Relative = 10;
            
            this.cobthoigianthue.Name = "cobthoigianthue";
            this.cobthoigianthue.Text = "Tổng thời gian";
            this.cobthoigianthue.Width.Relative = 10;
            
            this.cobdongia.Name = "cobdongia";
            this.cobdongia.Text = "Đơn giá";
            this.cobdongia.Width.Relative = 10;

            this.cobthanhtien.Name = "cobthanhtien";
            this.cobthanhtien.Text = "Thành tiền";
            this.cobthanhtien.Width.Relative = 18;

            this.advTree1.Columns.Add(this.colmathuexe);
            this.advTree1.Columns.Add(this.colmxe);
            this.advTree1.Columns.Add(this.colkh);
            this.advTree1.Columns.Add(this.colsdt);
            this.advTree1.Columns.Add(this.coldatethue);
            this.advTree1.Columns.Add(this.cobgiobd);
            this.advTree1.Columns.Add(this.cobthoigianthue);
            this.advTree1.Columns.Add(this.cobdongia);
            this.advTree1.Columns.Add(this.cobthanhtien);

        }
        #endregion

        private void cobThongKe_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbltongtien.Text = "-------------";
            if (cobThongKe.Text == "Chưa thanh toán")
            {
                txttimkiemchuathanhtoan.Visible = true;
                this.advTree1.ContextMenuStrip = this.contextMenuStrip1;
            }
            else
            {
                txttimkiemchuathanhtoan.Visible = false;
                this.advTree1.ContextMenuStrip = null;
            }

            if (cobThongKe.Text == "Tổng hợp")
                tkTongHop();
            else
            {
                if (cobThongKe.Text == "Hủy thuê xe")
                    tkHuyThue();
                else
                {
                    if (cobThongKe.Text == "Đã thanh toán")
                    {
                        tkChuaThanhToan();
                        lblnote.Text = "";
                    }
                    else
                    {
                        if (cobThongKe.Text == "Chưa thanh toán")
                            tkChuaThanhToan();
                    }
                }
            }
        }

        private void buttonItem4_Click(object sender, EventArgs e)
        {
            this.Close();            
        }

        private void buttonItem5_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn muốn thoát chương trình", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                Application.Exit();
        }

        string path;
        public void Backup()
        {
            db.ExecuteCommand("BACKUP DATABASE [" + DAL.Properties.Settings.Default.DataBase + "] TO DISK='" + path + "'");
        }
        private void buttonItem1_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Title = "Backup cơ sở dữ liệu.";
            saveFileDialog1.DefaultExt = "bak";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    path = saveFileDialog1.FileName;                
                    Backup();
                    MessageBox.Show("Backup cơ sở dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception) { MessageBox.Show("Backup cơ sở dữ liệu thất bại, thử lưu file ở chỗ khác.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            }
        }


        string path2;
        public void Restore()
        {
            db.ExecuteCommand("USE master RESTORE DATABASE [" + DAL.Properties.Settings.Default.DataBase + "] FROM DISK='" + path2 + "'");
        }
        private void buttonItem2_Click(object sender, EventArgs e)
        {
            openFileDialog1.Title = "Restore cơ sở dữ liệu.";
            openFileDialog1.Filter = "Rich File(*.bak)|*.bak|All File(*.*)|*.*";

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    path2 = openFileDialog1.FileName;                    
                    MessageBox.Show("Restore cơ sở dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception) { MessageBox.Show("Restore cơ sở dữ liệu thất bại.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            }
        }

        private void buttonItem3_Click(object sender, EventArgs e)
        {
            frmThongTinNhanVien frm = new frmThongTinNhanVien();
            frm.manv = MaNhanVien;
            frm.Show();
        }
               
        private void panel_Grid_MouseEnter(object sender, EventArgs e)
        {
            panel_Grid.Focus();
        }

        private void panel_Grid_MouseWheel(object sender, MouseEventArgs e)
        {
            //panel_Grid.Focus();
            if (e.Delta > 0)
            {

                if (panel_Grid.VerticalScroll.Value - 2 >= panel_Grid.VerticalScroll.Minimum)
                    panel_Grid.VerticalScroll.Value -= 2;
                else
                    panel_Grid.VerticalScroll.Value = panel_Grid.VerticalScroll.Minimum;
            }
            else
            {
                if (panel_Grid.VerticalScroll.Value + 2 <= panel_Grid.VerticalScroll.Minimum)
                    panel_Grid.VerticalScroll.Value += 2;
                else
                    panel_Grid.VerticalScroll.Value = panel_Grid.VerticalScroll.Maximum;
            }
        }

        private void txttimkiemchuathanhtoan_TextChanged(object sender, EventArgs e)
        {
            TKLoad33();
        }


        //delegate
        public void GetValue()
        {
            if(txttimkiemchuathanhtoan.Text =="")
            {
                if (checkBox1.Checked)
                    TKLoad3(dateTimeInput_tungay.Value, dateTimeInput_denngay.Value);
                else TKLoad3(System.DateTime.Now, System.DateTime.Now);
            }
            else
            {
                TKLoad33();
            }
        }
        private void sửaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                Node nod = advTree1.SelectedNode;
                frmThanhToan frm = new frmThanhToan();
                frm.mathuexe = nod.Cells[0].Text;
                frm.MyGetData = new frmThanhToan.GetString(GetValue);
                frm.ShowDialog();
                //MessageBox.Show(nod.Cells[0].Text);
            }
            catch { }
        }
               
    }
}
